/**
 * 
 */
package business;

import java.util.List;

import model.Artikel;
import model.Bestellung;
import model.Kunde;

/**
 * default implementation for the following interfaces:
 * <ul>
 * <li>Kundenlogik
 * <li>ArtikelLogik
 * <li>BestellungLogik
 * </ul>
 * 
 * @author andris
 *
 */
public class LogikManager implements KundenLogik, ArtikelLogik,
		BestellungLogik {

	private KundenLogik kundenLogik;
	private ArtikelLogik artikelLogik;
	private BestellungLogik bestellungLogik;
	
	
	
	/**
	 * erzeugt eine neue BusinessLogik
	 */
	public LogikManager(){
		this.kundenLogik = KundenContainer.getInstance();
		this.bestellungLogik = BestellungContainer.getInstance();
		this.artikelLogik = ArtikelContainer.getInstance();
	}
	
	
	/* (non-Javadoc)
	 * @see business.KundenHandler#close()
	 */
	@Override
	public void close() {
		this.kundenLogik.close();
		this.artikelLogik.close();
		this.bestellungLogik.close();

	}

	/* (non-Javadoc)
	 * @see business.KundenHandler#getKunde(int)
	 */
	@Override
	public Kunde getKunde(int kundennummer) {
		return this.kundenLogik.getKunde(kundennummer);
	}

	/* (non-Javadoc)
	 * @see business.KundenHandler#getKundenListeZuName(java.lang.String)
	 */
	@Override
	public List<Kunde> getKundenListeZuName(String name) {
		return this.kundenLogik.getKundenListeZuName(name);
	}

	/* (non-Javadoc)
	 * @see business.KundenHandler#getKundenListeZuNummer(java.lang.String)
	 */
	@Override
	public List<Kunde> getKundenListeZuNummer(String kundennummer) {
		return this.kundenLogik.getKundenListeZuNummer(kundennummer);
	}

	/* (non-Javadoc)
	 * @see business.KundenHandler#removeKunde(int)
	 */
	@Override
	public Kunde removeKunde(int kundennummer) {
		return this.kundenLogik.removeKunde(kundennummer);
	}

	/* (non-Javadoc)
	 * @see business.KundenHandler#saveKunde(model.Kunde)
	 */
	@Override
	public void saveKunde(Kunde kunde) {
		this.kundenLogik.saveKunde(kunde);

	}

	/* (non-Javadoc)
	 * @see business.KundenHandler#updateKunde(model.Kunde)
	 */
	@Override
	public void updateKunde(Kunde kunde) throws Exception {
		this.updateKunde(kunde);

	}

	/* (non-Javadoc)
	 * @see business.ArtikelHandler#getAllArtikel()
	 */
	@Override
	public List<Artikel> getAllArtikel() {
		return this.artikelLogik.getAllArtikel();
	}

	/* (non-Javadoc)
	 * @see business.ArtikelHandler#getArtikel(int)
	 */
	@Override
	public Artikel getArtikel(int artikelnummer) {
		return this.artikelLogik.getArtikel(artikelnummer);
	}

	/* (non-Javadoc)
	 * @see business.ArtikelHandler#removeArtikel(int)
	 */
	@Override
	public void removeArtikel(int artikelnummer) {
		this.artikelLogik.removeArtikel(artikelnummer);
	}

	/* (non-Javadoc)
	 * @see business.ArtikelHandler#saveArtikel(model.Artikel)
	 */
	@Override
	public void saveArtikel(Artikel artikel) {
		this.artikelLogik.saveArtikel(artikel);
	}

	/* (non-Javadoc)
	 * @see business.BestellungHandler#getBestellung(int)
	 */
	@Override
	public Bestellung getBestellung(int bestellnummer) {
		return this.bestellungLogik.getBestellung(bestellnummer);
	}

	/* (non-Javadoc)
	 * @see business.BestellungHandler#getBestellungenfuerKunde(int)
	 */
	@Override
	public List<Bestellung> getBestellungenfuerKunde(int kundennummer) {
		return this.bestellungLogik.getBestellungenfuerKunde(kundennummer);
	}

	/* (non-Javadoc)
	 * @see business.BestellungHandler#removeBestellung(int)
	 */
	@Override
	public void removeBestellung(int bestellnummer) {
		this.bestellungLogik.removeBestellung(bestellnummer);
	}

	/* (non-Javadoc)
	 * @see business.BestellungHandler#saveBestellung(model.Bestellung)
	 */
	@Override
	public void saveBestellung(Bestellung bestellung) {
		this.bestellungLogik.saveBestellung(bestellung);
	}

	/* (non-Javadoc)
	 * @see business.BestellungHandler#updateBestellung(model.Bestellung)
	 */
	@Override
	public void updateBestellung(Bestellung bestellung) {
		this.bestellungLogik.updateBestellung(bestellung);
	}

}
